package com.ess.user.po;

import com.ess.base.Ztree;
import com.ess.constants.Constants;
import org.apache.commons.lang3.StringUtils;

import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;

@Table(name = "t_mall_menu")
public class Menu extends Ztree {

    private static final long serialVersionUID = -101111L;

    public Menu() {
    }

    /**
     * SID,自增序列
     */
    @Id
    private String sid;
    /**
     * 菜单名称
     */
    private String menuName;

    /**
     * 用于唯一标识一个tab
     */
    @Transient
    private String tabId;

    /**
     * 菜单级别,从1开始，最大6级
     */
    private String menuLevel;

    /**
     * 菜单图标
     */
    private String menuIcon;

    /**
     * 上一级菜单ID(1级菜单没有上一级)
     */
    private String parentSid;

    /**
     * 菜单链接(仅叶子菜单有链接)
     */
    private String menuLink;

    /**
     * 权限标识
     */
    private String permitMark;

    /**
     * 菜单排序,从1开始，按升序排
     */
    private String menuSort;

    /**
     * 是否叶子菜单，0-否，1-是
     */
    private String isLeaf;

    /**
     * 是否可见，0-隐藏，1-可见
     */
    private String isVisible;

    /**
     * 创建人ID，如果没有创建人，则标记为-1,代表系统
     */
    private String createUser;

    /**
     * 创建时间，默认为系统时间
     */
    private Date createDate;

    /**
     * 修改人ID
     */
    private String updateUser;

    /**
     * 修改时间
     */
    private Date updateDate;

    /**
     * 逻辑删除标记 0-正常，1-删除
     */
    private String isDeleted;

    /**
     * 菜单类型  0-平台 1-后台
     */
    private String menuType;

    public String getMenuType() {
        return menuType;
    }

    public void setMenuType(String menuType) {
        this.menuType = menuType;
    }

    /**
     * SID,自增序列
     */
    public String getSid() {
        return sid;
    }

    public void setSid(String sid) {
        this.sid = sid == null ? null : sid.trim();
        this.id = this.sid;
    }

    /**
     * 菜单名称
     *
     * @return MENU_NAME 菜单名称
     */
    public String getMenuName() {
        return menuName;
    }

    /**
     * 菜单名称
     *
     * @param menuName 菜单名称
     */
    public void setMenuName(String menuName) {
        this.menuName = menuName == null ? null : menuName.trim();
        this.name = this.menuName;
    }

    /**
     * 菜单级别,从1开始，最大6级
     *
     * @return MENU_LEVEL 菜单级别,从1开始，最大6级
     */
    public String getMenuLevel() {
        return menuLevel;
    }

    /**
     * 菜单级别,从1开始，最大6级
     *
     * @param menuLevel 菜单级别,从1开始，最大6级
     */
    public void setMenuLevel(String menuLevel) {
        this.menuLevel = menuLevel == null ? null : menuLevel.trim();
    }

    /**
     * 菜单图标
     *
     * @return MENU_ICON 菜单图标
     */
    public String getMenuIcon() {
        return menuIcon;
    }

    /**
     * 菜单图标
     *
     * @param menuIcon 菜单图标
     */
    public void setMenuIcon(String menuIcon) {
        this.menuIcon = menuIcon == null ? null : menuIcon.trim();
    }

    /**
     * 上一级菜单ID(1级菜单没有上一级)
     *
     * @return PARENT_SID 上一级菜单ID(1级菜单没有上一级)
     */
    public String getParentSid() {
        return parentSid;
    }

    /**
     * 上一级菜单ID(1级菜单没有上一级)
     *
     * @param parentSid 上一级菜单ID(1级菜单没有上一级)
     */
    public void setParentSid(String parentSid) {
        this.parentSid = parentSid == null ? null : parentSid.trim();
    }

    /**
     * 菜单链接(仅叶子菜单有链接)
     *
     * @return MENU_LINK 菜单链接(仅叶子菜单有链接)
     */
    public String getMenuLink() {
        return menuLink;
    }

    /**
     * 菜单链接(仅叶子菜单有链接)
     *
     * @param menuLink 菜单链接(仅叶子菜单有链接)
     */
    public void setMenuLink(String menuLink) {
        this.menuLink = menuLink == null ? null : menuLink.trim();
        if (StringUtils.isNotEmpty(menuLink)) {
            try {
                if (menuLink.lastIndexOf("/") > 0) {
                    this.tabId = menuLink.substring(menuLink.lastIndexOf("/") + 1);
                } else {
                    this.tabId = this.menuLink;
                }
            } catch (Exception e) {
            }
        }
    }

    /**
     * 权限标识
     *
     * @return PERMIT_MARK 权限标识
     */
    public String getPermitMark() {
        return permitMark;
    }

    /**
     * 权限标识
     *
     * @param permitMark 权限标识
     */
    public void setPermitMark(String permitMark) {
        this.permitMark = permitMark == null ? null : permitMark.trim();
    }

    /**
     * 菜单排序,从1开始，按升序排
     *
     * @return MENU_SORT 菜单排序,从1开始，按升序排
     */
    public String getMenuSort() {
        return menuSort;
    }

    /**
     * 菜单排序,从1开始，按升序排
     *
     * @param menuSort 菜单排序,从1开始，按升序排
     */
    public void setMenuSort(String menuSort) {
        this.menuSort = menuSort == null ? null : menuSort.trim();
    }

    /**
     * 是否叶子菜单，0-否，1-是
     *
     * @return IS_LEAF 是否叶子菜单，0-否，1-是
     */
    public String getIsLeaf() {
        return isLeaf;
    }

    /**
     * 是否叶子菜单，0-否，1-是
     *
     * @param isLeaf 是否叶子菜单，0-否，1-是
     */
    public void setIsLeaf(String isLeaf) {
        this.isLeaf = isLeaf == null ? null : isLeaf.trim();
        if (Constants.STRING_ONE.equals(this.isLeaf)) {
            this.isParent = false;
        } else {
            this.isParent = true;
        }
    }

    /**
     * 是否可见，0-隐藏，1-可见
     *
     * @return IS_VISIBLE 是否可见，0-隐藏，1-可见
     */
    public String getIsVisible() {
        return isVisible;
    }

    /**
     * 是否可见，0-隐藏，1-可见
     *
     * @param isVisible 是否可见，0-隐藏，1-可见
     */
    public void setIsVisible(String isVisible) {
        this.isVisible = isVisible == null ? null : isVisible.trim();
    }

    /**
     * 创建人ID，如果没有创建人，则标记为-1,代表系统
     *
     * @return CREATE_USER 创建人ID，如果没有创建人，则标记为-1,代表系统
     */
    public String getCreateUser() {
        return createUser;
    }

    /**
     * 创建人ID，如果没有创建人，则标记为-1,代表系统
     *
     * @param createUser 创建人ID，如果没有创建人，则标记为-1,代表系统
     */
    public void setCreateUser(String createUser) {
        this.createUser = createUser == null ? null : createUser.trim();
    }

    /**
     * 创建时间，默认为系统时间
     *
     * @return CREATE_DATE 创建时间，默认为系统时间
     */
    public Date getCreateDate() {
        return createDate;
    }

    /**
     * 创建时间，默认为系统时间
     *
     * @param createDate 创建时间，默认为系统时间
     */
    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }

    /**
     * 修改人ID
     *
     * @return UPDATE_USER 修改人ID
     */
    public String getUpdateUser() {
        return updateUser;
    }

    /**
     * 修改人ID
     *
     * @param updateUser 修改人ID
     */
    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser == null ? null : updateUser.trim();
    }

    /**
     * 修改时间
     *
     * @return UPDATE_DATE 修改时间
     */
    public Date getUpdateDate() {
        return updateDate;
    }

    /**
     * 修改时间
     *
     * @param updateDate 修改时间
     */
    public void setUpdateDate(Date updateDate) {
        this.updateDate = updateDate;
    }

    /**
     * 逻辑删除标记 0-正常，1-删除
     *
     * @return IS_DELETED 逻辑删除标记 0-正常，1-删除
     */
    public String getIsDeleted() {
        return isDeleted;
    }

    /**
     * 逻辑删除标记 0-正常，1-删除
     *
     * @param isDeleted 逻辑删除标记 0-正常，1-删除
     */
    public void setIsDeleted(String isDeleted) {
        this.isDeleted = isDeleted == null ? null : isDeleted.trim();
    }

    public String getTabId() {
        return tabId;
    }

    public void setTabId(String tabId) {
        this.tabId = tabId;
    }

}